package com.annoncesautomobile.modele.local;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;

import android.content.Context;
import android.content.SharedPreferences;
import android.text.format.Time;

public class MesAnnoncesAlertes {
	
	private static final String PREFERENCES_NAME = "ANNONCE_AUTO";
	private static final String ANNONCES_ALERTES = "annonces_alertes";
	private static final String ANNONCES_ALERTES_DATETIME = "annonces_alertes_datetime";
	private static final String SEPARATOR = ";";
	
	/**
	 * Charge et retourne le set d'annonces alertes
	 * @return le set d'annonces alertes
	 */
	public static Set<Long> loadMesAnnoncesAlertes(Context context) {
		HashSet<Long> mesAnnoncesAlertes = new HashSet<Long>();
		SharedPreferences settings = context.getSharedPreferences(PREFERENCES_NAME, 0);
		String mesFavorisString = settings.getString(ANNONCES_ALERTES, "");
		Set<String> mesAnnoncesAlertesStringsSet = new HashSet<String>(Arrays.asList(mesFavorisString.split(SEPARATOR)));
		for(String annonceAlertesString : mesAnnoncesAlertesStringsSet) {
			if(annonceAlertesString.length() != 0) {
				mesAnnoncesAlertes.add(Long.valueOf(annonceAlertesString));
			}
		}
		return mesAnnoncesAlertes;
	}
	
	/**
	 * Sauvegarde le set d'annonces alertes (ecrase les anciens)
	 * @param mesAnnoncesAlertes les annonces alertes
	 */
	public static void saveMesAnnoncesAlertes(Context context, Set<Long> mesAnnoncesAlertes) {
		SharedPreferences settings = context.getSharedPreferences(PREFERENCES_NAME, 0);
		SharedPreferences.Editor editor = settings.edit();
		
		DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault());
		Date date = new Date();
		
		StringBuilder stringBuilder = new StringBuilder();
		for(Long annonceAlertes : mesAnnoncesAlertes) {
			stringBuilder.append(String.valueOf(annonceAlertes)).append(SEPARATOR);
		}
		
		//editor.clear();
		editor.putString(ANNONCES_ALERTES, stringBuilder.toString());
		editor.putString(ANNONCES_ALERTES_DATETIME, dateFormat.format(date));
		editor.commit();
	}
	
	/**
	 * Retourn vrai si l'annonce est dans le set d'annonces alertes et faux sinon
	 * @param idAnnonce L'id de l'annonce
	 * @return vrai si l'annonce est dans le set d'annonces alertes et faux sinon
	 */
	public static boolean isInMesAnnoncesAlertes(Context context, Long idAnnonce) {
		return loadMesAnnoncesAlertes(context).contains(idAnnonce);
	}
	
	/**
	 * Retourne la datetime de la derniere sauvegarde des annonces alertes
	 * @param context Le context
	 * @return la datetime de la derniere sauvegarde des annonces alertes
	 */
	public static String getDatetimeString(Context context) {
		SharedPreferences settings = context.getSharedPreferences(PREFERENCES_NAME, 0);
		return settings.getString(ANNONCES_ALERTES_DATETIME, "");
	}

}
